#include <iostream>
using namespace std;
class Solution
{
public:
    int getSum(int a, int b)
    {
        // 充分利用半加器
        // unsigned int 是用来防止溢出的操作
        // 溢出相当于堆最大值取模
        // 相同位数上是1时才需要进位
        while (b)
        {
            unsigned int up = (a & b) << 1;
            a = a ^ b;
            b = up;
        }
        return a;
    }
};

int main()
{
    int a = 2, b = 3;
    int ret = Solution().getSum(a, b);
    cout << ret << endl;
    return 0;
}